home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 576-600 / 595 / clibsave / clipsave.c < prev    next >
C/C++ Source or Header  |  1995-03-15  |  4KB  |  170 lines

  1. /*----------------------------------------------------------------------------
  2.    File   :    ClipSave
  3.    Projekt:    --
  4.    Inhalt :    CBOpen  - öffnet ClipBoard
  5.                CBClose - Gegenspieler zu CBOpen
  6.                CBRead  - momentanen Inhalt aus Clibboard lesen
  7.                CBDel   - CLEAR an Clibboard.device
  8.                main
  9.    Version:    0.1
  10.    Datum  :    11.Juni 1991
  11.  
  12.    Autor  :    Uwe Röhm
  13.    Adresse:    Auber Str. 25,  W-6209 Hohenstein 4
  14.     (Semester) Wörthstr. 18    W-8390 Passau
  15.    Bemerkung:
  16. ----------------------------------------------------------------------------*/
  17. #include <exec/types.h>
  18. #include <exec/io.h>
  19. #include <libraries/dos.h>
  20. #include <devices/clipboard.h>
  21. #include <stdio.h>
  22.  
  23. struct MsgPort   *CBMsgPort;
  24. struct IOClipReq *CBIO;
  25. char             *Buffer;
  26. long              Length;
  27.  
  28. /*  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
  29.    Funktion  :  CBOpen
  30.    Parameter :  long unit  (welche Unit soll geöffnet werden)
  31.    Rückgabe  :  long error (aufgetretener Fehler beim Device-öffnen)
  32.  
  33.    Aufruf von:  main
  34.    UnterFunks:  --
  35.    Autor     :  Uwe Röhm
  36.    Datum     :  11.06.1991
  37.    Bemerkung:
  38. --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  */
  39. long CBOpen (long unit)
  40. {
  41.    long error;
  42.  
  43.    CBMsgPort = (struct MsgPort *) CreatePort (NULL, NULL);
  44.    CBIO      = (struct IOClipReq *)
  45.                CreateExtIO (CBMsgPort, sizeof (struct IOClipReq));
  46.    error = OpenDevice ("clipboard.device", unit, CBIO, 0);
  47.    if (error)
  48.    {
  49.       DeletePort (CBMsgPort);
  50.       DeleteExtIO (CBIO);
  51.    }
  52.    return (error);
  53. }
  54.  
  55. /*  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
  56.    Funktion  :  CBClose
  57.    Parameter :  --
  58.    Rückgabe  :  --
  59.  
  60.    Aufruf von:  main
  61.    UnterFunks:  --
  62.    Autor     :  Uwe Röhm
  63.    Datum     :  11.06.1991
  64.    Bemerkung:
  65. --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  */
  66. void CBClose ()
  67. {
  68.    if (CBIO)
  69.    {
  70.       CloseDevice (CBIO);
  71.       DeletePort (CBMsgPort);
  72.       DeleteExtIO (CBIO);
  73.    }
  74. }
  75.  
  76. /*  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
  77.    Funktion  :  CBRead
  78.    Parameter :  --
  79.    Rückgabe  :  --
  80.  
  81.    Aufruf von:  main
  82.    UnterFunks:  --
  83.    Autor     :  Uwe Röhm
  84.    Datum     :  11.06.1991
  85.    Bemerkung:
  86. --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  */
  87. void CBRead ()
  88. {
  89.    long alles, len[5];
  90.  
  91.    CBIO->io_Command = CMD_READ;
  92.    CBIO->io_ClipID  = 0;
  93.    CBIO->io_Offset  = 0;
  94.    CBIO->io_Data    = (char *) len;
  95.    CBIO->io_Length  = 20;
  96.    DoIO (CBIO);
  97.  
  98.    alles  = len[1];
  99.    Length = len[4];
  100.    Buffer = (char *) malloc (Length);
  101.  
  102.    CBIO->io_Data = (char *) Buffer;
  103.    CBIO->io_Length = Length;
  104.    DoIO (CBIO);
  105.  
  106.    CBIO->io_Offset += alles;
  107.    CBIO->io_Data    = NULL;
  108.    CBIO->io_Length  = 1;
  109.    DoIO (CBIO);
  110. }
  111.  
  112. /*  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
  113.    Funktion  :  CBDel
  114.    Parameter :  --
  115.    Rückgabe  :  --
  116.  
  117.    Aufruf von:  main
  118.    UnterFunks:  --
  119.    Autor     :  Uwe Röhm
  120.    Datum     :  11.06.1991
  121.    Bemerkung:
  122. --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  */
  123. void CBDel ()
  124. {
  125.    CBIO->io_Command = CMD_CLEAR;
  126.    CBIO->io_Offset  = 0;
  127.    CBIO->io_ClipID  = 0;
  128.    DoIO (CBIO);
  129. }
  130.  
  131.  
  132.  
  133. main (int argc, char *argv[])
  134. {
  135.    int retcode = 0;
  136.    long wrote;
  137.    FILE *fh;
  138.  
  139.    if (argc == 2)
  140.    {
  141.       if (CBOpen (0) == 0)
  142.       {
  143.          fh = fopen (argv[1], "w");
  144.          if (fh != NULL)
  145.          {
  146.             CBRead ();
  147.             if (Buffer)
  148.             {
  149.                wrote = fwrite (Buffer,(long) Length,(long) 1, fh);
  150.                if (wrote != 1)
  151.                   retcode = 10;
  152.                CBDel ();
  153.                free (Buffer);
  154.             }
  155.             else
  156.                retcode = 5;
  157.          }
  158.          else
  159.             retcode = 20;
  160.          CBClose ();
  161.       }
  162.       else
  163.          retcode = 5;
  164.    }
  165.    else
  166.      retcode = 10;
  167.  
  168.    return retcode;
  169. }
  170.